﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.ServiceModel.DomainServices.Client;
using System.Collections.Generic;
using Biciq.Datos;
using System.IO;
using Biciq.Silverlight.UI.Clases;
using System.Windows.Browser;

namespace Biciq.Silverlight.UI
{   
    public class BackupsVistaModelo:VistaModeloBase
    {
        private List<ArchivoBackup> _archivos;
        private ArchivoBackup _archivoSeleccionado;
        /// <summary>
        /// Muestra respaldos anteriorme realizados
        /// </summary>
        public ArchivoBackup ArchivoSeleccionado
        {
            get { return _archivoSeleccionado; }
            set 
            {
                _archivoSeleccionado = value;
                RaisePropertyChanged("ArchivoSeleccionado");
            }
        }
        /// <summary>
        /// Lista de respaldos
        /// </summary>
        public List<ArchivoBackup> Archivos
        {
            get { return _archivos; }
            set
            { 
                _archivos = value;
                RaisePropertyChanged("Archivos");
            }

        }
        /// <summary>
        /// Vista de respaldos realizados
        /// </summary>
        public BackupsVistaModelo()
        {
            ConsultarArchivos();
        }
        /// <summary>
        /// Consultar respaldos realizados
        /// </summary>
        private void ConsultarArchivos()
        {
            Procesando = true;
            BiciqContexto.LeerArchivosBackup().Completed += (o, v) =>
            {
                Procesando = false;
                Archivos = ((InvokeOperation<List<ArchivoBackup>>)o).Value;
              
            };
        }
        /// <summary>
        /// Metodo para editar respaldos de archivos.
        /// </summary>
        /// <param name="parametro"></param>
        public override void Editar(object parametro)
        {
            ArchivoSeleccionado = parametro as ArchivoBackup;


            var urlReporte = ConfigurationManager.AppSettings["WebSite"].ToString() + ConfigurationManager.AppSettings["CarpetaBackups"].ToString();
            HtmlPage.Window.Navigate(new System.Uri(urlReporte + ArchivoSeleccionado.nombre), "_blank");

        }
        /// <summary>
        /// Metodo para guardar archivos
        /// </summary>
        public override void Guardar()
        {
            Action accion = Generar;
            LogicStudio.Framework.UI.Controles.CuadroDialogo.Mostrar("Esta seguro de generar un archivo de respaldo de la BDD?", "Desea Generar un respaldo", LogicStudio.Framework.UI.Utilidades.TipoVentana.Pregunta, accion);

        }
        /// <summary>
        /// Comando para guardar respaldo.
        /// </summary>
        private void Generar()
        {
            Procesando = true;
            BiciqContexto.BakupBDD().Completed += (o, v) =>
            {
                var result = ((InvokeOperation<Result>)o).Value;
                if (result.estado)
                {
                    LogicStudio.Framework.UI.Controles.CuadroDialogo.Mostrar(result.mensaje, "Generación de Respaldo", LogicStudio.Framework.UI.Utilidades.TipoVentana.Ok);
                    ConsultarArchivos();
                }
                else
                {
                    Procesando = false;
                    LogicStudio.Framework.UI.Controles.CuadroDialogo.Mostrar(result.mensaje, "Error Generación de Respaldo", LogicStudio.Framework.UI.Utilidades.TipoVentana.Error);
                }

            };
        }

      
    }
}
